Archive-name: object-faq/part3 Last-Modified: 10/27/94 Version: 1.0.7 > ORBELINE - The SMART Object Request Broker ORBeline is a complete implementation of OMG's Common Object Request Broker Architecture (CORBA). ORBeline goes beyond the standard specification to provide a SMART communication framework allowing you to easily develop large distributed applications that are robust, scalable, flexible and maintainable. ORBeline incorporates PostModern's proven communication framework that links thousands of nodes. See Appendix E:65 for a complete description and anon FTP info. > Orbix Orbix Iona Technologies Ltd. 8-34 Percy Place Dublin 4 Ireland The latest release of Orbix, Version 1.2, includes an Object Loader function for the first time, as well as an upgraded Interface Repository, a new approach to filtering, and more code examples to guide programmers. Orbix was launched in June 1993 as the first full and complete implementation of the Object Management Group's (OMG's) Common Object Request Broker Architecture (CORBA) standard. With Orbix, programmers can develop distributed, object oriented applications following a consistent and straightforward, standards-based model. With Orbix Version 1.2 IONA has added the ability to dynamically load objects at runtime through its Object Loader function. This enables developers to more easily integrate Orbix applications with existing data stores be they traditional flat file databases, relational databases or object oriented databases. The improved Interface Repository is an integral part of IONA's CORBA implementation. The Interface Repository operates as a dynamic browser which is populated with all objects or services available at runtime keeping programmers informed of the functions, attributes and characteristics of objects and services. In version 1.2 IONA has also extended the whole approach to filtering of requests, and has made it easier for users to integrate Orbix with their security systems providing for improved reliability of distributed systems built using Orbix. IONA has also extensively extended the number, and scope, of code examples it ships with the product to help developers learning how to use the system. IONA released Orbix for SunSoft Solaris and SunOS at the Object World exhibition in San Francisco, Calif., June 1993. Since then it has rolled out versions of Orbix for Microsoft Windows NT, Silicon Graphics IRIX and HP/UX. IONA demonstrated a version of Orbix for Microsoft Windows 3.1 at Object World in London, England last October. Orbix for Microsoft Windows 3.1 is now in beta. In January 1994, IONA and SunSoft Inc. signed an agreement to align their implementations of CORBA. The two companies demonstrated interoperability between IONA's Orbix running on Microsoft Windows 3.1 and SunSoft's Distributed Objects Everywhere (DOE) on Solaris. In addition Orbix-TP, integration with Tuxedo for transaction processing, has just entered beta testing. Work is underway on Orbix-FT, integration with the Isis distributed system, will deliver a fault-tolerant ORB. Paul Hickey, tel: +353-1-6686522 Iona Technologies Ltd., fax: +353-1-6686573 8-34 Percy Place, email: pth@iona.ie Dublin 4 Ireland Availability ------------ The full Orbix availability and release schedule looks like: Operating System C++ Compiler Release Date ------------------------------------------------------- SunOS 4.1 SPARCompiler 2.1 NOW SunOS 4.1 SPARCompiler 3.0.2 NOW SunOS 4.1 Lucid 3.1 NOW SunOS 4.1 GNU 2.5.8 NOW Solaris 2.x SPARCompiler 3.0.2 NOW Solaris 2.x SPARCompiler 4.0 NOW Solaris 2.x GNU 2.5.7 NOW IRIX 4.0.5H Native NOW IRIX 5.x Native NOW HP-UX Native NOW Microsoft Windows NT Visual C++ NOW Microsoft Windows NT Borland NOW Microsoft Windows 3.1 Visual C++ In Beta IBM AIX C Set++ 4th Qtr OSF/1 DEC C++ 4th Qtr SCO Native 4th Qtr UnixWare Computer Innovations 4th Qtr Ultrix DEC C++ 4th Qtr Release of Orbix on OS/2 is also imminent. Documents Available from IONA ----------------------------- electronic mail server - server@iona.ie anonymous ftp file server - ftp ftp.iona.ie World Wide Web - http://www.iona.ie/ > NCR 'Cooperative Frameworks' -- a Distributed Object Foundation From: Randy Volters Subject: re-post: NCR Cooperative Frameworks (new phone no.) November 19, 1993 NCR ANNOUNCES BETA AVAILABILITY OF 'Cooperative Frameworks' -- a Distributed Object Foundation Product Background - NCR Cooperative Frameworks(TM) were first released for sale in 10/1991 as "the frameworks" part of the NCR COOPERATION(TM) product, and are based on NCR's submission to OMG. Cooperative Frameworks release 3.0 makes the product available apart from COOPERATION. Product Description - Cooperative Frameworks is a distributed object foundation for building computing applications and services on networks of heterogeneous computers. Cooperative Frameworks consists of an integrated suite of C++ class libraries that: - defines and implements a comprehensive enterprise architecture and methodology for creating distributed implementations of C++ classes over networks - allows customers to build and use object services over a network - supports TCP/IP, NetBIOS, Lan Manager NetBEUI and OSI protocols, X.25 NCR Cooperative Frameworks currently has two portable ORB toolkits (others are planned for future release) -- (1) C++ ORB toolkit consisting of over 300 C++ classes and runtime libraries (2) CORBA 1.1 toolkit Both are for: - wrapping existing databases and legacy applications for improved availability and maintainability on systems of heterogeneous computers, operating systems and networks - building next-generation, object-oriented, distributed computing applications for networks of heterogeneous computers, operating systems and network operating systems Cooperative Frameworks come with predefined object services for implementing distributed systems: - Naming - network implementation of X.500 directory provides object naming service - Logging - provides local and server based error logging - Fine-grain Data Management - class libraries are designed around fine grained objects, developers can build distributed objects as large or as small as needed - Persistence - the same object stream model for communication between internal ORB functions is used to support object persistence. Persistent objects can be files, relational or object databases - Dynamic Service Location - provides a mechanism for registering services and entities in a distributed system and invoking targeted services based on service characteristics -- rather than names - Dynamic Service Activation - provides a mechanism for object activation when method invocations are required, and deactivation when not needed - Event Service (Release 3.1) - Implements an OMG/JOSS compliant event service - Network Configuration Tools - simplifies creation of directory entries required for cross domain operation in a multiple domain heterogeneous network. NCR Cooperative Frameworks run on multiple UNIX platforms, including HP-UX, Sun Solaris, NCR 3000 UNIX and NCR StarServer UNIX SVR4; and on MS Windows 3.1. Cooperative Frameworks has been demonstrated on Novell NetWare v3.11, and was originally developed on MS OS/2 v1.x. Development environments supported include CFRONT and C++ Workbench from NCR, HP Softbench Sun SPARCworks and Borland IDE. Implementation - implementation is for client/server system architectures as a set of DLL and shared libraries Languages used for IDL mapping - IDL bindings for C, (or object services can be implemented directly in C++) Release date - Release 3.0 is available now to early developers with general availability set for December, 1993; Release 3.1 will be available to early developers 1Q 1994 with general availability set for 2Q 1994 Product interoperability - Full interoperability between NCR Cooperative Framework implementations on supported platforms is available now; interoperability with selected CORBA 1.1 ORBs and CORBA 2.0 ORBs is planned Company Name - NCR Corporation (An AT&T Company) Address -- Software Products Division-Columbia 3245 Platt Springs Road West Columbia SC 29170 Phone (803) 939-7500 FAX (803) 939-7745 Contact Name Randy Volters, Sr. Product Manager Cooperative Frameworks Email: Randy.Volters@ColumbiaSC.NCR.COM Ext. 7774 Company Description - NCR, AT&T's computer business, brings computing and communications solutions together to provide people easy access to information and to each other -- anytime, anywhere. > Suite Software SuiteDOME Product: DOME - Distributed Object Management Environment Company: Object Oriented Technologies Ltd 118-120, Warwick Street, Leamington Spa, CV32 4QY England Contact: Chris Nugent, email: chris@rtc.co.uk tel: +44 (0)926 313133 fax: +44 (0)926 422165 Short Description: DOME provides heterogenous distribution across many platforms and networks, including: UNIX, Windows, Windows NT, OS/2, OSF/1 (AXP), OpenVMS, SunOs, Solaris, HP-UX, SGI Unix, Stratus FTX, TCP/IP, NetBIOS, XTI As a fully peer-to-peer product DOME can be used to build systems using any combination of the above. Long Description: DOME is an ORB toolkit for the production of user-configured ORBs and servers. It is a multi-threaded high performance ORB suitable for use in large scale commercial systems and embedded real-time systems. DOME is non-intrusive, meaning that the application development is separated from the means of distribution and the problem of distributed object management; this allows the application to be built and tested on a single machine using local resources. Existing software can also be incorporated easily, providing integration for legacy systems. DOME is constructed as a C++ class library, from which ORBs can be configured and constructed to best suit the runtime environment. This provides great flexibility since new classes can be derived from existing ones and the resulting configurations implemented to user-specific requirements. Database distribution can be as simple persistent files, RDBMSs, OODMS, or a combination of these. DOME has a CORBA-conformant interface, and is CORBA 1.0 compliant with the following divergences - additions: - full C++ binding, - integral support for GUI development, - network monitoring & analysis, - transaction management, - location broking, - enhanced security; ommissions: - dynamic invocation, which is seen as detrimental to performance and network security; however, DOME does allow stream operators to perform the same function. DOME was first released in August 1993; version 2 in May 1994. 3.8.7 Books, Articles, And Literature -------------------------------------- This section is expected to grow considerably in the future. "Distributed Object Computing With CORBA", C++ Report, July/August 1993 The Object Database Standard: ODMG-93 edited by: R.G.G. Cattell published by Morgan Kaufmann Publishers, San Mateo, California [Covers CORBA standards with respect to OODBs] 3.9) Why Is Garbage Collection a Good Thing? --------------------------------------------- From: Paul Johnson (paj@gec-mrc.co.uk) Garbage collection (GC) is a facility in the run-time system associated with a language which will automatically reclaim objects which are no longer used. OO Languages which require garbage collection include Eiffel, Smalltalk and CLOS. C and C++ can have garbage collection retrofitted (see [3] below). [Ada has switchable GC, too -bob] Without GC programmers must explicitly deallocate dynamic storage when it is no longer needed (in C this is done by a call to free(3)). There are a number of problems with this: 1: Bugs due to errors in storage deallocation are very hard to find, although products are available which can help. 2: In some circumstances the decision about whether to deallocate storage cannot be made by the programmer. Drawing editors and interpreters often suffer from this. The usual result is that the programmer has to write an application-specific garbage collector. 3: An object which is responsible for deallocating storage must be certain that no other object still needs that storage. Thus many modules must co-operate closely. This leads to a tight binding between supposedly independent modules. 4: Libraries with different deallocation strategies are often incompatible, hindering reuse. 5: In order to avoid problems 3 and 4, programmers may end up copying and comparing whole objects rather than just references. This is a particular problem with temporary values produced by C++ overloaded operators. 6: Because keeping track of storage is extra work, programmers often resort to statically allocated arrays. This in turn leads to arbitrary restrictions on input data which can cause failure when the assumptions behind the chosen limits no longer apply. For instance many C compilers limit expression nesting, identifier length, include file nesting and macro stack depth. This causes problems for programs that generate C. One partial solution to a lack of GC is reference counting. In this scheme each object keeps a count of references to it. When this count drops to zero the object is automatically deallocated. However this is inefficient (swapping two references will result in three decrements, three increments and six comparisons) and cannot reclaim circular data structures. Two systems that use a reference count GC are the Interviews C++ graphics library and the Unix file system (the link count). Opponents of GC reply that it introduces an overhead which is unacceptable in some applications. However the overhead of manual storage deallocation is probably as high as GC. GC algorithms are also available with good real-time behaviour. [Further, GC can perform compaction improving locality of reference.] Further Reading: [1] "Object-Oriented Software Construction" by Meyer puts the argument for GC. [2] "Uniprocessor Garbage Collection Techniques," by Paul R. Wilson, in Memory Management (proceedings of 1992 Int'l Workshop on Memory Management, Sept. 1992, St. Malo, France, Yves Bekkers and Jacques Cohen, eds.), Springer Verlag Lecture Notes in Computer Science #637. This is an excellent summary of the state of the art in GC algorithms. This and other papers about garbage collection are available in PostScript via anonymous ftp (cs.utexas.edu:pub/garbage/gcsurvey.ps. [See APPENDIX E] [3] "Garbage Collection in an Uncooperative Environment" by Boehm and Weiser. Software --- Practise and Experience vol 18(9), pp 807-820. Sept 1988. This describes GC in C and C++. 3.10) What Can I Do To Teach OO To The Kids? --------------------------------------------- Smalltalk (in its original 1972 version) was initially intended to make computer programming easy enough for children. The idea was that manipulating objects was something more intuitive and natural than coding procedures. Other entries or suggestions are welcome, please send to the author of the FAQ. 3.11) What Is Available On Object-Oriented Testing? --------------------------------------------------- [This entry was donated by Doug Shaker and is certainly a FAQ] Testing of Object-Oriented Programming (TOOP) FAQ/Resource Summary Posted to comp.object, comp.lang.c++, comp.lang.smalltalk and comp.software.testing. Last revised on 93.10.27. The most notable change is in the additions to the Software section. Also a couple of articles added to the Written Material section. > What? This is a summary of resources on the Testing of Object-Oriented Programming that have been mentioned to me over the net, in email, or other means. Sections include Written Material, Courses, and Software. It is kind of like an FAQ, though it isn't organized that way. > Who? I work for a Unix software house, Qualix Group, in the US. Here is my sig: - Doug Shaker voice: 415/572-0200 fax: 415/572-1300 email: dshaker@qualix.com mail: Qualix Group 1900 S. Norfolk St., #224 San Mateo, CA 94403 I am NOT a researcher on the testing of object-oriented programming. I just collate the stuff that is sent to me by people who REALLY know something. See the section "ACKs" at the end. I just think it is important. > Why? Why is this important? If classes are really to be reused in confidence, they must be blatantly correct. The classes must be easily testable during initial evaluation by the client programmer. They must also be testable under different OS configurations, different compiler optimizations, etc. This means that testing modules must be constructed in a way which is recognized as correct and the modules must be shipped with the class libraries. As soon as one major class library vendor starts to ship real test code with their libraries, all of the other vendors will be forced, by market pressure, to do so as well, or face market share erosion. Think about it. If you had to recommend a class library to a committee that was choosing a basis for the next five years of work, wouldn't you feel safer with a class library that could be auto-tested in your environment? > Written Material Berard, Edward. Essays on Object-Oriented Software Engineering. Prentice-Hall, Englewood Cliffs, NJ. $35. This book has two chapters on testing of object-oriented software, focusing on how to do it. Berard, Edward. Project Management Handbook. Must be purchased direct from Berard Software Engineering, Ltd., 902 Wind River Lane, Suite 203, Gaithersburg, Maryland 20878. $225. The book focuses on the management of OOP projects. It includes one chapter on testing OO software and one chapter on quality assurance. Bezier, Boris, "Software Testing Techniques", 2nd edition, Van Nostrand Reinhold, 1990, 503pp, $43, ISBN 0-442-20672-0. While this is not specifically about testing of OOP, it is mentioned so often by so many people as a definitive software testing work, that I have to mention it anyway. Cheatham Thomas J., and Lee Mellinger, "Testing Object-Oriented Software Systems", Proceedings of the 18th ACM Annual Computer Science Conference, ACM, Inc., New York, NY, 1990, pp. 161-165. Doong, Roong-Ko and Phyllis G. Frankl, "Case Studies on Testing Object-Oriented Programs", Proceedings of the 4th Symposium on Testing, Analysis, and Verification (TAV4), 1991, ACM, Inc., New York, NY, 1991, pp. 165-177. Fiedler, Steven P., "Object-Oriented Unit Testing", Hewlett-Packard Journal, April, 1989, pp. 69-74. Firesmith, D.G., "Testing Object-Oriented Software", Proceedings of 11th. TOOLS USA Conference, Santa Barbara, Aug 1993, pp 407-426. Frankl, Phyllis G. and Roong-Ko Doong, "Tools for Testing Object-Oriented Programs", Proceedings of the 8th Pacific Northwest Conference on Software Quality, 1990, pp. 309-324. One author can be reached at pfrankl@polyof.poly.edu. Graham, J.A., Drakeford, A.C.T., Turner, C.D. 1993. The Verification, Validation and Testing of Object Oriented Systems, BT Technol J. Vol 11, No 3. One author's email address is jgraham@axion.bt.co.uk. Harrold, Mary Jean, John D. McGregor, and Kevin J. Fitzpatrick, "Incremental Testing of Object-Oriented Class Structures", International Conference on Software Engineering, May, 1992, ACM, Inc., pp. 68 - 80. Hoffman, Daniel and Paul Strooper. A Case Study in Class Testing. To be Presented at the IBM Center for Advanced Studies Fall Conference, October 1993, Toronto. Email addresses for authors are dhoffman@csr.uvic.ca and pstropp@cs.uq.oz.au. Describes an approach to testing which the authors call Testgraphs. An example is worked out in C++ which tests a commercial class. Hoffman, D. M. A CASE Study in Module Testing. In Proc. Conf. Software Maintenance, pp. 100-105. IEEE Computer Society, October 1989. Hoffman, D.M. and P.A. Strooper. Graph-Based Class Testing. In 7th Australian Software Engineering Conference (to appear), 1993. Klimas, Edward "Quality Assurance Issues for Smalltalk Based Applications", The Smalltalk Report, Vol. 1, No. 9, pp.3-7. The author's email address is "ac690@cleveland.freenet.edu". Lakos, John S. "Designing-In Quality in Large C++ Projects" Presented at the 10th Annual Pacific Northwest Software Quality Conference, Portland, Oregon, October 21, 1993. Abstract: The focus of this paper is on ensuring quality by designing software that avoids acyclic component dependencies. This in-turn permits incremental, hierarchical testing. The importance of good physical design becomes a key factor only for large and very large projects. Intuition gained from smaller projects leads to errors in large designs. Compile-coupling ("Insulation") is also discussed. Copies of the postscript file can be obtained by sending email to "john_lakos@warren.mentorg.com". Leavens, G. T., "Modular Specification and Verification of Object-Oriented Programs", IEEE Software, July 1991, pp. 72-80. Love, Tom. Object Lessons. SIGS Books, 588 Broadway #604, New York, NY 10012. $49. This book eloquently elucidates the need for testing of object- oriented code and has a chapter on how it was done at Stepstone during the first release of their initial class library. Marick, Brian. The Craft of Software Testing, Prentice-Hall, in press. Makes the argument that testing of object-oriented software is simply a special case of testing software which retains state and which is reused. The author can be reached at info@testing.com. Narick, Brian. "Testing Software that Reuses", Technical Note 2, Testing Foundations, Champaign, Illinois, 1992. Copies may be obtainable via email. The author can be reached at info@testing.com. Murphy, G.C., Wong, P. 1992, Towards a Testing Methodology for Object Oriented Systems, M.P.R Teltech Ltd. A poster at the Conference on Object Oriented Programming Systems, Languages and Applications ACM. Copies of this paper can be obtained through townsend@mprgate.mpr.ca. Murphy, G. and P. Wong. Object-Oriented Systems Testing Methodology: An Overview. Techical Report TR92-0656, MPR Teltech Ltd., October 1992. Perry, D.E. and G.E. Kaiser, "Adequate Testing and Object-Oriented Programming", Journal of Object-Oriented Programming, 2(5):13-19, Jan/Feb 1990. Purchase, Jan A. and Russel L. Winder, "Debugging tools for object-oriented programming", Journal of Object-Oriented Programming, June, 1991, Vol. 4, No. 3, pp. 10 - 27. Smith, M. D. and D. J. Robson, " A Framework for Testing Object-Oriented Programs", JOOP, 5(3):45-53, June 1992. Describes ways in which the usual approach to software testing could be adapted for object-oriented software. This paper, or one with the same title and authors, is available by anonymous ftp from vega.dur.ac.uk as "/pub/papers/foot.dvi". Smith, M. D. and D. J. Robson, "Object-Oriented Programming - the Problems of Validation", Proceedings of the 6th International Conference on Software Maintenance 1990, IEEE Computer Society Press, Los Alamitos, CA., pp. 272-281. Taylor, David. "A quality-first program for object technology", Object Magazine, Vol. 2, No. 2, July-August 1992, pp17-18. SIGs Publications. The article talks some about why testing is important for OOP and describes one quality program. Theilen, David. "No Bugs. Delivering error free code in C and C++.", Addison-Wesley, 1992, ISBN:0-201-60890-1. Turner, C. D. and D. J. Robson, "The Testing of Object-Oriented Programs", Technical Report TR-13/92, Computer Science Division, School of Engineering and Computer Sciences (SECS), University of Durham, England. Includes a survey of existing literature on testing of OO programs. Testing of OOP is compared with traditional software testing. A state-based approach is described. This paper is available by anonymous ftp from vega.dur.ac.uk in /pub/papers. Get "toop.ps.Z" for A4 paper and "toopus.ps.Z" for US letter paper formatting. Turner, C. D. and D. J. Robson, "A Suite of Tools for the State-Based Testing of Object-Oriented Programs", Technical Report TR-14/92, Computer Science Division, School of Engineering and Computer Science (SECS), University of Durham, Durham, England. Describes a series of tools for the generation and execution of test cases for OOP. These tools assume a state-based testing approach. This paper is available by anonymous ftp from vega.dur.ac.uk in /pub/papers. Get "tools.ps.Z" for A4 paper formatting or get "toolsus.ps.Z" for US letter formatting. Turner, C. D. and D. J. Robson, "Guidance for the Testing of Object- Oriented Programs", Technical Report TR-2/93, Computer Science Division, School of Engineering and Computer Science (SECS), University of Durham, Durham, England. Discusses different methods of making class declarations and the implications of those methods for testing. This paper is available by anonymous ftp from vega.dur.ac.uk in /pub/papers. Get "guide.ps.Z" for A4 paper formatting or get "guideus.ps.Z" for US letter formatting. Turner, C. D. and D. J. Robson, "State-Based Testing and Inheritance", Technical Report TR-1/93, Computer Science Division, School of Engineering and Computer Science (SECS), University of Durham, Durham, England. Discusses the implications of inheritance for testing, particularily incremental testing. This paper is available by anonymous ftp from vega.dur.ac.uk in /pub/papers. Get toopinht.ps.Z" for A4 paper formatting or get "toopinhtus.ps.Z" for US letter formatting. Wong, P. Automated Class Exerciser (ACE) User's Guide. Technical Report TR92-0655, MPR Teltech Ltd., September 1992. > Courses Berard Software Engineering, Inc. teaches a seminar on Testing of Object-Oriented Software (TOOS). The next one scheduled that I know of is November 8-12, in Washington. Call 301-417-9884 for details. Quality Fractals, Inc. has a course called "Testing Object-Oriented Software". Contact: 508-359-7273 (Box 337, Medfield, MA 02052). The course is taught by Shel Siegel of YESS!, Inc. Contact: 916-944-1032. > Software There is a smalltalk class library in the Univ. of Illinois archives which includes a simple Tester class written by Bruce Samuelson (bruce@utafll.uta.edu). It is a general superclass for application specific classes that test non-interactive objects such as trees, collections, or numbers. It is not suitable for testing user interface components such as windows, cursors, or scroll bars. The filein includes Tree classes, Tester itself, and subclasses of Tester that are used to validate the Tree classes. For ParcPlace Smalltalk (ObjectWorks 4.1 and VisualWorks 1.0). To get it ftp the file "/pub/st80_vw/TreeLW1.1" from st.cs.uiuc.edu. IPL Ltd. (in the UK) has a testing tool called Cantata which allows for testing C++, but as far as I am able to determine, it has no special features for C++ testing. From the product literature: Cantata allows testing to be performed in an intuitive way making the tool exceptionally easy to use and productive in operation. Cantata is suitable for testing software written in either C or C++. Cantata provides comprehensive facilities for all forms of dynamic testing, including: functional testing, structural testing, unit testing and integration testing. Cantata has been specifically designed to operate in both host and target systems and so allow full portability of tests between these environments. For more information contact IPL: IPL Ltd. Eveleigh House, Grove Street, Bath BA1 5LR UK (0225) 444888 (0225) 444400 (FAX) email: shaun@iplbath.demon.co.uk TestCenter from CenterLine will do coverage testing of C++ (and C) code. Also does some memory debugging (similar to Purify) and regression testing. Highlights from CenterLine literature: *Automatic run-time error-checking on executables to enhance quality *Automatic memory leak detection on executables to optimize memory use *Graphical test coverage to highlight any code not executed during test runs *Intuitive GUI for easy test analysis *Programmatic interface to output files and cumulative code coverage to support batch-mode and regression testing *No recompilation needed, resulting in quick turnaround *Complete C and C++ language support *Integration with leading programming tools for maximum productivity gains MicroTech Pacific Research (mpr.ca) has a C++ class testing tool called ACE (Automated Class Exerciser) which is available under non-disclosure agreement. It is not currently for sale. If you are interested, contact Paul Townsend, townsend@mprgate.mpr.ca. Software Research Inc. (625 Third St, San Francisco, CA 94107-1997, voice: 1-415-957-1441, email: info@soft.com) has a coverage tool for C++ that is called tcat++. It is an extension of SRI's tcat program. Quality Assured Software Engineering (938 Willowleaf Dr., Suite 2806, San Jose, CA 95128, voice: 1-408-298-3824 ) has a coverage tool for C and C++ called MetaC. It also dones some syntax checking and memory allocation checking. A group of volunteers is building a C++ test harness for the automated testing of C++, C and Perl programs. The system is called ETET (Extended Test Environment Toolkit). To join the group of volunteers, send email to etet_support@uel.co.uk The software is available via anonymous FTP from bright.ecs.soton.ac.uk (152.78.64.201) as "/pub/etet/etet1.10.1.tar.Z". They are looking for other FTP sites - sned email to the above address if you can provide one. This is a beta release and _should_ compile on any POSIX.1 system. As much of this work is being done by SunSoft, my guess is that the software will have the fewest problems on SunOS or Solaris releases. > ACKs Thanks to the following for helping assemble this list: Benjamin C. Cohen, bcohen@scdt.intel.com Brian Marick, marick@hal.cs.uiuc.edu Bruce Samuleson, bruce@utafll.uta.edu Daniel M. Hoffman, dhoffman@uvunix.uvic.ca Edward Klimas, ac690@cleveland.freenet.edu John Graham, J.Graham@axion.bt.co.uk Jim Youlio, jim@bse.com Jeffery Brown, jeffrey.brown@medtronic.com Lars Jonsson, konlajo@etna.ericsson.se Manfred Scheifert, ch_schie@rcvie.co.at Mark Swanson, mswanson@mechmail.cv.com Mary L. Schweizer, mary@gdwest.gd.com Michael Einkauf, Michael_Einkauf@iegate.mitre.org Paul Townsend, townsend@mprgate.mpr.ca Phyllis G. Frankl, pfrankl@polyof.poly.edu Rachel Harrison, rh@ecs.soton.ac.uk Risto Hakli, rkh@tko.vtt.fi Russ Hopler, russ@bse.com Stephane Barbey, barbey@di.epfl.ch Tony Reis, tonyr@hpsadln.sr.hp.com Yawar Ali, yali@bnr.ca 3.12) What Distributed Systems Are Available? --------------------------------------------- The following post helps to provide some answers with at least a partial list. See also Appendix E. From: rmarcus@bcsaic.boeing.com (Bob Marcus) Newsgroups: comp.object,comp.client-server Subject: Distributed Computing Products Overview Date: 17 Sep 93 00:02:40 GMT Organization: Boeing Computer Services DISTRIBUTED COMPUTING PRODUCTS OVERVIEW There was a recent posting concerning the relationship between OMG's CORBA and Distributed Transaction Processing Monitors. In general, there is a lot of uncertainty as to how the various distributed computing tools, products and environments might work together. Below is the outline of an eight-page posting to the Corporate Facilitators of Object-Oriented Technology (CFOOT) mailing list addressing these issues. Let me know if you would like a copy of the posting and/or to be added to the CFOOT mailing list. Bob Marcus rmarcus@atc.boeing.com ----------------------------------------------------------------------- SOME GENERAL REFERENCES FOR ADDITIONAL INFORMATION ----------------------------------------------------------------------- MULTIPROTOCOL NETWORK TRANSPORTS Peer Logic (PIPES) ATT (Transport Layer Interface) ----------------------------------------------------------------------- MICROKERNELS OSF(Mach) Chorus Systems (Chorus) Microsoft (NT) ----------------------------------------------------------------------- REMOTE PROCEDURE CALLS NobleNet (EZ-RPC) Netwise (Netwise-RPC) ATT/Sun (TI-RPC) OSF (DCE/RPC) ----------------------------------------------------------------------- CONVERSATIONAL PROGRAMMING IBM(Common Programming Interface-Communications) ----------------------------------------------------------------------- MESSAGING PRODUCTS System Strategies/IBM (MQ Series) Horizon Strategies (Message Express) Covia Systems(Communications Integrator) Momentum Software(X-IPC) Creative System Interface (AAI) Digital (DECmessageQ) HP (Sockets)(BMS) IBM (DataTrade)(DAE) Suite Software (SuiteTalk) Symbiotics (Networks) ----------------------------------------------------------------------- PUBLISH AND SUBSCRIBE MESSAGING Sun(Tooltalk) Teknekron (Teknekron Information Bus) ISIS(Distributed News) Expert Database Systems (Rnet) ---------------------------------------------------------------------- DISTRIBUTED COMPUTING ENVIRONMENTS OSF/DCE ISIS(Distributed Toolkit) ----------------------------------------------------------------------- TRANSACTION PROCESSING MANAGERS Unix Systems Lab (Tuxedo) Information Management Company (Open TransPort) NCR (TopEnd) Transarc (Encina) IBM/HP/Transarc (Open CICS) ----------------------------------------------------------------------- DISTRIBUTED WORKSTATION EXECUTION SYSTEMS Aggregate Systems (NetShare) Platform Computing(Utopia) ISIS(Resource Manager) ----------------------------------------------------------------------- OBJECT REQUEST BROKERS Hyperdesk (Distributed Object Manager) IBM Distributed System Object Model(DSOM) Microsoft (Distributed OLE) Iona Technologies Ltd. (Orbix) BBN (Cronus) ISIS (RDOM) Qualix (NetClasses) Symbiotics (Networks!) Digital(ACA Services) Suite Software (SuiteDOME) ----------------------------------------------------------------------- SYSTEM MANAGEMENT OSF (Distributed Management Environment) Legent Digital Analysis (HyperManagement) ----------------------------------------------------------------------- DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS Texas Instruments (Information Engineering Facility) HP (SoftBench) Digital (COHESIONworX) ----------------------------------------------------------------------- DISTRIBUTED DEVELOPMENT/EXECUTION PRODUCTS Independence Technologies (iTRAN) Intellicorp(Kappa) ISIS Distributed Systems (RDOM) Early, Cloud & Company (Message Driven processor) Expersoft(XShell) Cooperative Solutions(Ellipse) ----------------------------------------------------------------------- 3.13) What Is The MVC Framework? -------------------------------- MVC stands for Model-View-Controller. This framework was originally adopted in Smalltalk to support Graphical User Interfaces. Views support graphical interfacing, controllers handle interaction, and models are the application objects. See [Krasner 88] and [LaLonde 90b]. From: Carl Petter Swensson Prof. Trygve Reenskaug is generally cited as being the creator of the MVC concept. He worked with the Smalltalk group at Xerox PARC as a visiting scientist in 78/79. During this stay at Xerox PARC he developed the MVC. I know him well and have talked to him about this. He confirms it, although stating that it was a collaborative effort at Xerox PARC. The implementation of MVC in Smalltalk-80 has since been further developed by ParcPlace Systems. He has worked with Smalltalk in a commercial and research environments since then. His group at the Centre for Industral Research in Oslo (now part of the SINTEF group) had the only Smalltalk-78 implementation outside Xerox PARC. He is now working with Taskon AS. The ideas that initially gave MVC has been developed further and is the basis of the work Trygve is currently doing on the OOram methodology. 3.14) What is Real-Time? ------------------------ Real-time is our linear extrapolation/perception of imaginary time (along a quantum wave function (OTU) in ten dimensions, of course). [This section is YTBI] 3.15) What Is Available on OO Metrics? -------------------------------------- This section is still building. [Berard 93] contains an elaborate bibliography and section on OO metrics. [Booch 94] also contains some coverage. Also: Object Oriented Software development Mark Lorenz ISBN 0-13-726928-5 Prentice Hall Software Metrics Grady-Caswell ISBN 0-13-821844-7 Prentice Hall Measuring Software Design Quality Card-Glass ISBN 0-13-568593-1 Prentice Hall From: trilk@informatik.tu-muenchen.de (Joern Trilk) Newsgroups: comp.object,comp.lang.c++,comp.lang.smalltalk,comp.databases.object Subject: Re: In search of OO Metrics Date: 20 Jun 1994 14:29:27 GMT Organization: Technische Universitaet Muenchen, Germany >... Here are some references: @article{inheriting:1993, author = {G. Michael Barnes and Bradley R. Swim}, title = {Inheriting software metrics}, journal = {JOOP}, year = {1993}, month = {Nov./Dec.}, volume = {6}, number = {7}, pages = {27-34} } @article{a-new-metr:1993, author = {J.-Y. Chen and J.-F. Lu}, title = {A new metric for object-oriented design}, journal = {Information and Software Technology}, year = {1993}, month = apr, volume = {35}, number = {4}, pages = {232-240} } @inproceedings{towards-a-:1991, author = {Shyam R. Chidamber and Chris F. Kemerer}, title = {Towards a Metrics Suite for Object Oriented Design}, booktitle = {OOPSLA '91 Proceeedings}, year = {1991}, pages = {197-211} } @inproceedings{software-m:1992, author = {J. Chris Coppick and Thomas J. Cheatham}, title = {Software Metrics for Object-Oriented Systems}, booktitle = {CSC '92 Proceedings}, year = {1992}, pages = {317-322} } @inproceedings{some-metri:1991, author = {B. Henderson-Sellers}, title = {Some metrics for object-oriented software engineering}, booktitle = {TOOLS Proceedings}, year = {1991}, pages = {131-139} } @article{object-ori:1993, author = {Wei Li and Sallie Henry}, title = {Object-Oriented Metrics that Predict Maintainability}, journal = {J. Systems Software}, year = {1993}, volume = {23}, pages = {111-122} } @inproceedings{workshop-r:1992, author = {Teri Roberts}, title = {Workshop Report - Metrics for Object-Oriented Software Development}, booktitle = {OOPSLA '92 (Addendum to the Proceedings)}, year = {1992}, pages = {97-100} } @techreport{softwareme:1991, author = {A. Buth}, title = {Softwaremetriken f{\"u}r objekt-orientierte Programmiersprachen}, institution = {Gesellschaft f{\"u}r Mathematik und Datenverarbeitung}, year = {1991}, month = jun, number = {545}, type = {Arbeitspapiere der GMD} } The Software Engineering FAQ lists the following references concerning metrics for object-oriented systems: Date: 26 Jan 1993 Originally collected by: ZUSE%DB0TUI11.BITNET@vm.gmd.de (Horst Zuse) a. Morris Kenneth L. Metrics for Object-Oriented Software Development Environments (master's thesis). 1989, MIT. b. Rocacher, Daniel: Metrics Definitions for Smalltalk. Project ESPRIT 1257, MUSE WP9A, 1988. c. Rocacher, Daniel: Smalltalk Measure Analysis Manual. Project ESPRIT 1257, MUSE WP9A, 1989. d. Lake, Al: A Software Complexity Metric for C++. Annual Oregon Workshop on Software Metrics, March 22-24, 1992, Silver Falls, Oregon, USA. e. Bieman, J.M.: Deriving Measures of Software Reuse in Object Oriented Systems. Technical Report #CS91-112, July 1991, Colorado State Universty, Fort Collins/ Colorado, USA. Hope this helps, Joern ---------------------------------------------------------------------- Joern Trilk Phone: ++49-89-2105-2391 Institut fuer Informatik (H1) Fax: ++49-89-2105-5296 TU Muenchen Email: trilk@informatik.tu-muenchen.de 80290 Muenchen ---------------------------------------------------------------------- SECTION 4: COMMONLY ASKED LANGUAGE SPECIFIC QUESTIONS ====================================================== 4.1) What is Downcasting? -------------------------- Downcasting is the term used in C++ for casting a pointer or reference to a base class to a derived class. This should usually be checked with an embedded dynamic typing scheme if such a scheme is not present in the language, such as with a typecase (Modula-3) or inspect (Simula) construct. In C++, it is even possible to use conversion functions to perform some checks, although the proposed RTTI will perform checked downcasting as its primary ability. 4.2) What are Virtual Functions? --------------------------------- Look under "Dynamic Binding" and "Polymorphism". 4.3) Can I Use Multiple-Polymorphism Or Multi-Methods In C++? --------------------------------------------------------------- Yes, but you'll need to embed a dynamic typing scheme to do it. With dynamic types in place, an overriding method in a derived class can explicitly check argument types in a switch statement and invoke the desired method emulating multiple-polymorphism [See Coplien 92]. For true CLOS multi-methods, the above technique implemented as a base function (CLOS defgeneric), switching to specialized functions (CLOS methods, made friends of all arguments) will provide the functional calling syntax, multiple- polymorphism and access to parameters found in CLOS. This can require some complex switching, which is somewhat mitigated when multiple-polymorphism is implemented with virtual functions. Future FAQs should contain more detail. 4.4) Can I Use Dynamic Inheritance In C++? ------------------------------------------- Yes, [Coplien 92] describes a scheme where a class can contain a pointer to a base class that can switch between its derived classes, providing a limited form. Earlier chapters contain entries on bypassing C++'s message system and even bypassing static linking. Future FAQs should contain more detail. ANNOTATED BIBLIOGRAPHY ====================== [Agrawal 91] R. Agrawal et al. "Static Type Checking of Multi-Methods". OOPSLA 91. Object-Oriented Programming Systems, Languages, and Applications. ACM Press. Addison Wesley. Compile-time checking and optimizations for multi-methods. [Aho 86] Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Reading, MA: Addison-Wesley, 1986. Authoritative, classic book on compilers and optimizations. Type chapter contains section on type inferencing (using ML as an example). [Berard 93] Edward V. Berard. Essays on Object-Oriented Software Engineering. Prentice Hall. Many topics on OOSE, includes coverage of OO domain and requirements analysis. [Black 86] A. Black et al. Object-Structure in the Emerald System. OOPSLA '86 Conference Proceedings, SIGPLAN Notices (Special Issue), Vol. 21, n0. 11, pp 78-86. [I believe there is a more recent article, YTBI] The original article on Emerald. OO language without inheritance but with abstract types and static subtype polymorphism. Also designed for distributed programming and reuse. See article for references: Jade on reuse [Raj 89]) and Distr. Prog. [Black 87] A. Black, N. Hutchinson, E. Jul, H. Levyand L. Carter. Distribution and Abstract Types in Emerald, IEEE Transactions on Software Engineering, Vol. SE13, no. 1 Jam., pp 65-76. Subtype polymorphism for distributed programming in Emerald [Black 86]. [Blair 89] "Genericity vs Inheritance vs Delegation vs Conformance vs ..." Gordon Blair, John Gallagher and Javad Malik, Journal of Object Oriented Programming, Sept/Oct 1989, pp11-17. Recommended by a reader, but the Author has yet to review this article. [Boehm 86] B.W. Boehm. A Spiral Model of Software Development and Enhancement. Software Engineering Notes, Aug., vol. 11 (4), p 22. Presents an alternative evolutionary approach to the strict waterfall software engineering life-cycle. Now a classic, most OO methodologies now emphasize the iterative or evolutionary approach to software development. [Booch 87] Grady Booch. Software Engineering with Ada. 2nd Ed. Benjamin Cummings. Booch in his early years. Mostly object-based programming with Ada. [Booch 87b] Grady Booch. Software Components With Ada, Structures, Tools, and Subsystems. Benjamin Cummings. A taxonomy and collection of object-based components in Ada (includes code). Has many examples with generics. [Booch 91] Booch, Grady. Object-Oriented Design With Applications. Benjamin Cummings. The often referred to book on OOD. Offers design notation and methodology. Brief coverage of OOA and elaborate OOD/P coverage in the applications. Good on basic principles and has case studies in Smalltalk, Object Pascal, C++, CLOS and Ada. Also contains an *elaborate* classified bibliography on many areas of OO. [Booch 94] Grady Booch. Object-Oriented Analysis And Design With Applications, 2nd Ed. Benjamin Cummings. ISBN 0-8053-5340-2. The next FAQ should be updated to the second edition. All examples are now in C++. Booch incorporates several other major methodologies including Wirf-Brock's CRC (Class-Responsibility-Collaboration) and Jacobson's Use- Cases. [Cardelli 85] L. Cardelli and P. Wegner. On Understanding Types, Data Abstraction, and Polymorphism. ACM Computing Surveys vol. 17 (4). Long, classic article on Object-Oriented Types, Data Abstraction and Polymorphism. Formal coverage with a type system analysis model as well. [Chambers 92] Craig Chambers. The Design and Implementation of the SELF Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. Dept of Computer Science, Stanford University, March 1992. Covers type optimizations for OO compilers. See Appendix E, PAPERS. [Chambers 93] Craig Chambers. Predicate Classes. Proceedings ECOOP '93 O. Nierstrasz, LNCS 707. Springer-Verlag, Kaiserslautern, Germany July 1993 pp 268-296 "... an object is automatically an instance of a predicate class whenever it satisfies a predicate expression associated with the predicate class. The predicate expression can test the value or state of the object, thus supporting a form of implicit property-based classification that augments the explicit type-based classification provided by normal classes. By associating methods with predicate classes, method lookup can depend not only on the dynamic class of an argument but also on its dynamic value or state. [...] A version of predicate classes has been designed and implemented in the context of the Cecil language. See Appendix E, PAPERS. [de Champeaux 93] Dennis de Champeaux, Doug Lea, Penelope Faure. Object-Oriented System Development. Addison-Wesley, ISBN 0-201-56355-X. Covers an integrated treatment of OOA and OOD. Takes serious the computational model of one thread per object. Gives more than usual attention to the OOA&D micro process. Presents a unique OOD language. [Coad 91] Peter Coad and Edward Yourdon. Object-Oriented Analysis, 2nd ed. Englewood Cliffs, NJ. Prentice Hall. Coad and Yourdon's OO analysis method. [Coad 91b] Peter Coad and Edward Yourdon. Object-Oriented Design. Englewood Cliffs, NJ. Prentice Hall. Coad and Yourdon's OO design method. [Coleman 94] Derek Coleman, et. al. Object-Oriented Development - The Fusion Method. Prentice-Hall Object-Oriented Series. ISBN 0-13-338823-9 Fusion is considered to be a second generation OOAD method in that it builds on successful components of a number of first generation methods (OMT, Booch, CRC, Objectory, etc). However, this has been done with the requirements of industrial software developers in mind. And so issues of traceability, management etc. have been taken into consideration and the Method provides full coverage from requirements through to code. [Cook 90] W.R. Cook, W.L.Hill, P.S. Canning. Inheritance Is Not Subtyping. Appeared in [Hudak 90] and Gunter 94]. Theoretical article on the separation between type and class, or as the authors state between implementation inheritance and subtyping. [Coplien 92] James O. Coplien. Advanced C++ Programming Styles and Idioms. Addison Wesley. Covers advanced C++ programming and performing other more advanced and dynamic styles of OO in C++. [Colbert 89] E. Colbert. The Object-Oriented Software Development Method: a practical approach to object-oriented development. Tri-Ada Proc., New York. Presents the Object-Oriented Software development method. Has emphasis on objects. [Cox 86,91] Cox, Brad J. Object-Oriented Programming, An Evolutionary Approach. Addison Wesley. The original book on Objective-C. Coverage on object-oriented design and programming. Also covers Objective-C implementation, even into object code. Objective-C... '91 AW by Pinson and Wiener provide another good text. [Embley 92] D.W. Embley, B.D. Kurtz, S.N. Woodfield. Object-Oriented Systems Analysis, A Model-Driven Approach. Yourdon Press/Prentice Hall, Englewood Cliffs, NJ. Presents the Embley and Kurtz OO methodology. [Garfinkel 93] Simson L. Garfinkel and Michael K. Mahoney. NeXTSTEP PROGRAMMING STEP ONE: Object-Oriented Applications. Springer-Verlag. Introduction to the NextStep environment and applications development. [Goldberg 83] Adele Goldberg and David Robson. Smalltalk-80 The Language and Its Implementation. Addison Wesley. The original book on Smalltalk. Covers implementation. Also known as "the Blue Book". Out of print. Superceded by [Goldberg ??]. [Goldberg ??] Adele Goldberg and David Robson. Smalltalk-80: The Language. Addison-Wesley. The "Purple Book". Omits the obsolete abstract virtual machine description from the Blue Book. [Gunter 94] Carl A. Gunter and John C. Mitchell. Theoretical Aspects of Object- Oriented Programming. MIT Press. ISBN 0-262-07155-X. Highly mathematical, formal coverage of object-oriented programming; primarily on typing. [Harmon 93] Paul Harmon. Objects In Action: Commercial Applications Of Object- Oriented Technologies. Jan, 1993. A-W ISBN 0-201-63336-1. Sponsored by the OMG to summarize the use of OO technology in industry and business, contains a brief history and summary of OO and many case studies. [HOOD 89] HOOD Working Group. HOOD Reference Manual Issue 3.0. WME/89-173/JB. Hood User Manual Issue 3.0. WME/89-353/JB. European Space Agency. Presnets the HOOD (Hierarchical Object-Oriented Design) OOSE methodology. From the European Space Agency. Based on Ada and object-based. [Hudak 90] P. Hudak. Principles of Programming Languages. ACM Press, pp 125 -135. Contains several articles, including [Cook 90]. [Hudak 92] Paul Hudak and Simon Peyton Jones. Haskell Report. SIGPLAN Notices. 1992, vol 27, no 5. Haskell reference. [Humphrey 89] Watts Humphrey. Managing the Software Process. Addison Wesley. Sponsored by the Software Engineering Institute (SEI), the presented project management model is inspired by the work of Boehm, Brooks, Deming and Juran and represents a strong step in the direction of achieving 6 sigma defect rate prevention and optimizing the software development process for quality, productivity, and reliability. Presents the CMM, see section . [IBM 90,91] Various Documents from the IBM International Technical Centers: GG24-3647-00, GG24-3641-00, GG24-3566-00, GG24-3580-00. Present IBM's OOSE methodology. [Jacobson 92] Ivar Jacobson, et al. Object-Oriented Software Engineering - A Use Case Driven Approach. ACM Press/Addison Wesley. Presents Jacobson's new OOSE methodology based on use cases. [Jones 92] Rick Jones. Extended type checking in Eiffel. Journal of Object- Oriented Programming, May 1992 issue, pp.59-62. Presents subtype polymorphic extension to Eiffel (static typing only). [Jurik 92] John A. Jurik, Roger S. Schemenaur, "Experiences in Object Oriented Development," ACM 0-89791-529-1/92/0011-0189. Presents the EVB OOSE methodology. Also: Barbara McAllister, Business Development, EVB Software Engineering, Inc., (301)695-6960, barb@evb.com. [Kiczales 92] Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow. The Art of the Metaobject Protocol. The MIT Press. Reflection and Metaobject Protocols (MOPs). Uses a CLOS subset, Clossette, as a foundation. [Kim 89] Won Kim and Frederick Lochovsky Editors. Object-Oriented Concepts, Applications, and Databases. Collection of articles on advanced OO and research systems. [Krasner 88] G. E. Krasner and S. T. Pope. A Cookbook for Using the Model-View- Controller User Interface Paradigm in Smalltalk-80. JOOP, vol 1, no 3, August/ September, 1988, pp 26-49, An early paper published on MVC. [Lakoff 87] George Lakoff. Women, Fire, and Dangerous Things: What Categories Reveal About The Mind. UOC Press. An almost formal view of classification/categorization by the noted cognitive scientist, George Lakoff. His view blasts objectivism and contends to replace it with a subjectivist view, based on a study of humans, natural language, and concept formation. [LaLonde 90] Wilf R. LaLonde and John R. Pugh. Inside Smalltalk: Volume 1. Prentice Hall. Good introduction to Smalltalk. [LaLonde 90b] Wilf R. LaLonde and John R. Pugh. Inside Smalltalk: Volume 2. Prentice Hall. Excellent coverage of MVC. However, it's based on ParcPlace Smalltalk-80, version 2.5, which is obsolete. [Liskov 93] Barbara Liskov and Jeannette M. Wing. Specifications and Their use in Defining Subtypes. OOPSLA 93, pp 16-28. ASM SIGPLAN Notices, V 28, No 10, Oct. 1993. A-W ISBN 0-201-58895-1. Specifications on Subtype hierarchies. Helps to insure the semantic integrity of a separate subtype system. See section 2.7. [Madsen 93] Ole Lehrmann Madsen, Birger Moller-Pedersen, Kristen Nygaard: Object-oriented programming in the BETA programming language. Addison-Wesley, June 1993. ISBN 0 201 62430 3 The new and authoritative book on BETA, by the original designers. They are some of the same designers of the Simula languages, originating OO. Also just announced: Object-Oriented Environments: The Mjolner Approach Editors: Jorgen Lindskov Knudsen, Mats Lofgren, Ole Lehrmann Madsen, Boris Magnusson Prentice Hall: The Object-Oriented Series ISBN: 0-13-009291-6 (hbk) [Martin 92] James Martin and James J. Odell. Object-Oriented Analysis and Design, Prentice-Hall, Englewood Cliffs, NJ. Its primary purpose is to indicate how information engineering (IE) can be evolved to accommodate OO. The analysis portion (starting at Chapter 15) attempts to go back to 'first principles' and is based on a formal foundation. Therefore, the IE aspect is not required. Emphasis is more on analysis than design. [Meyer 88] Bertrand Meyer. Object-Oriented Software Construction. Prentice Hall. [Is there a new edition out?] The original book on Eiffel. Coverage on object-oriented design and programming. Also: [Meyer 92] Bertrand Meyer. Eiffel: The Language. Prentice Hall. Englewood Cliffs, NJ. 1992. The definitive book on Eiffel by its author. [Meyer 94] Bertrand Meyer. Reusable Software: The Base Object-Oriented Components Libraries. The new Eiffel class Libraries. [Mugridge 91] Warwick B. Mugridge et al. Multi-Methods in a Statically-Typed Programming Language. Proc. ECOOP. Efficient implementation of Multi-Methods. [Murray 93] Robert B. Murray. C++ Strategies and Tactics. Addison Wesley. C++, has template examples. [Nerson 92] Jean-Marc Nerson. Applying Object-Oriented Analysis and Design. CACM, 9/92. Demonstrates the basics of the BON method/notation. Nerson: marc@eiffel.fr [Paepcke 93] Andreas Paepcke. Object-Oriented Programming: The CLOS Perspective. MIT Press. ISBN 0-262-16136-2. CLOS, readable introduction to its metaobject protocol, comparisons with other languages, uses and methodology, and implementation. Develops a persistent object metaclass example. [Raj 89] R.K. Raj and H.M. Levy. A Compositional Model for Software Reuse. The Computer Journal, Vol 32, No. 4, 1989. A novel approach aading reuse to Emerald [Black 86] without inheritance. [Reenskaug 91] T. Reenskaug, et al. OORASS: seamless support for the creation and maintenance of object-oriented systems. Journal of Object-Oriented Programming, 5(6). Presents the Object-Oriented Role Analysis, synthesis, and Structuring OOSE methodology. [Royce 70] W. W. Royce. Managing the Development of Large Software Systems. Proceedings of IEEE WESCON, August 1970. Introduces the Waterfall Process Model. [Rumbaugh 91] Rumbaugh James, et al. Object-Oriented Modeling and Design. Prentice Hall. The often referred to book on OOA/OOD. Introduces the Object Modeling Technique (OMT) OOA/D notation and methodology. Has case studies. [Sciore 89] Edward Sciore. Object Specialization. ACM Transactions on Information Systems, Vol. 7, No. 2, April 1989, p 103. A hybrid approach between delegation and classical OO. [Selic 94] Bran Selic, Garth Gullekson, and Paul T. Ward. Real-Time Object-Oriented Modeling. Published by John Wiley & Sons. ISBN 0-471-59917-4 OO method addresses complete lifecycle needs of real-time systems. Emphasizes executable models for early validation of requirements, architecture, and design combined with techniques for automatic generation of implementations. Specifically real-time with iterative and incremental development process. Single consistent graphical modeling concepts apply uniformly to OOA/D/I. [Shlaer 88] Sally Shlaer and Stephen J. Mellor. Object-Oriented Systems Analysis: Modeling the World in Data. Credited as the first book proposing an OOA method. [Shlaer 92] Sally Shlaer and Stephen J. Mellor. Object Lifecycles: Modeling the World in States. An addition to [Shlaer 88], provides dynamic modeling with a state- transition driven approach.